﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

using ZhimeiSoft.CharmManager.DOL;

namespace ZhimeiSoft.CharmManager.Server.BLL.Interface
{
    public interface IReservationBLL
    {
        /// <summary>
        /// 增加预约信息
        /// </summary>
        void AddResveration(DBEntityReservation reservatioinInfo, DataSet dsReservationServiceItem);
        /// <summary>
        /// 修改预约信息
        /// </summary>
        /// <param name="reservatioinInfo"></param>
        /// <param name="dsReservationServiceItem"></param>
        void UpdateReservation(DBEntityReservation reservatioinInfo, DataSet dsReservationServiceItem);
        /// <summary>
        /// 根据信息查询预约ＩＤ
        /// </summary>
        /// <param name="reservatioinInfo"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        int QueryResverationID(DBEntityReservation reservatioinInfo);
        /// <summary>
        /// 跟据月份查询预约信息
        /// </summary>
        /// <param name="queryYear">查询年</param>
        /// <param name="queryMonth">查询月</param>
        /// <returns></returns>
        DataSet QueryReservationMonth(int queryYear, int queryMonth, string state);
        /// <summary>
        /// 获取预约信息
        /// </summary>
        /// <param name="queryYear">查询年</param>
        /// <param name="queryMonth">查询月</param>
        /// <param name="queryDay">查询日</param>
        /// <param name="stateStr">预约状态</param>
        /// <returns></returns>
        DataSet GetResveration(int queryYear, int queryMonth, int queryDay, string stateStr);
        /// <summary>
        /// 获取员工预约信息
        /// </summary>
        /// <param name="queryYear">查询年</param>
        /// <param name="queryMonth">查询月</param>
        /// <param name="queryDay">查询日</param>
        /// <param name="employeeID">员工ID</param>
        /// <param name="stateStr">预约状态</param>
        /// <returns></returns>
        DataSet GetReservationEmployee(int queryYear, int queryMonth, int queryDay, int employeeID, string stateStr);
        /// <summary>
        /// 根据时间和会员查询预约
        /// </summary>
        /// <param name="querYear">年</param>
        /// <param name="queryMonth">月</param>
        /// <param name="queryDay">日</param>
        /// <param name="customID">会员ID</param>
        /// <param name="dsReservation">返回查询结果</param>
        /// <param name="error">错误信息</param>
        /// <returns></returns>
        DataSet QueryReservationCustom(int queryYear, int queryMonth, int queryDay, int customID);
        /// <summary>
        /// 根据预约ID查询对应的服务项目
        /// </summary>
        /// <param name="reservationID"></param>
        /// <returns></returns>
        DataSet QueryReservationServiceItem(int reservationID);
        /// <summary>
        /// 计算下一次的预约时间
        /// </summary>
        /// <param name="customerServiceItemID">预约的项目ID</param>
        int ComputerNextReservation(int customerServiceItemID);
        /// <summary>
        /// 查询会员卡项预约情况
        /// </summary>
        /// <param name="customID">会员ID</param>
        /// <param name="customServiceItemID">会员服务项目ID</param>
        /// <returns></returns>
        DataSet QeuryReservationCustomServiceItem(int customID, int customServiceItemID);
        /// <summary>
        /// 查询会员卡预约情况
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        DataSet QueryReservationCustomServiceItemFilter(string filter);
        /// <summary>
        /// 根据预约ID查询详细项目
        /// </summary>
        /// <param name="reservationID">预约ＩＤ</param>
        /// <returns></returns>
        DataSet QueryReservationServiceItemDetail(int reservationID);
        /// <summary>
        /// 预约项目调整
        /// </summary>
        /// <param name="ajdustReservationID">当前调整的预约项目ID</param>
        /// <param name="adjustDateTime">预约调整后的时间</param>
        /// <param name="customServiceItemID">要调整的时间</param>
        /// <param name="customID">会员</param>
        void AdjustReservationCustomServiceItem(int reservationID, DateTime adjustDateTime, int customServiceItemID, int customID);
        /// <summary>
        /// 预约调整
        /// </summary>
        /// <param name="entityReservation"></param>
        void AdjustReservation(DBEntityReservation entityReservation, int reservationEmployeeID);
        /// <summary>
        /// 更新预约状态
        /// </summary>
        /// <param name="reservationID"></param>
        /// <param name="customServiceItemID"></param>
        /// <param name="state"></param>
        void UpdateReservationCustomServiceItemState(int reservationID, int customServiceItemID, int employeeID, string state);
         /// <summary>
        /// 更新过期的预约状态
        /// </summary>
        /// <param name="error">错误信息</param>
        /// <returns></returns>
        void CheckAllReservationState();
        /// <summary>
        /// 刷新预约项目的提示
        /// </summary>
        /// <param name="reservationInfo"></param>
        void refershReservationToDoList(DBEntityReservation reservationInfo);
        
    }
}
